A number of systems and programs are offered on the market for the design of parts, such as the one provided by the applicant under the trademark CATIA. These so-called computer-aided design (CAD) systems allow a user to construct and manipulate complex three-dimensional (3D) models of parts.
A number of different modeling techniques can be used to design a part. These techniques include solid modeling, wire-frame modeling, and surface modeling. Solid modeling techniques provide for topological 3D models, where the 3D model is a collection of interconnected edges and faces, for example. Geometrically, a 3D solid model representing a part is a collection of trimmed surfaces that defines a closed skin. The trimmed surfaces correspond to the topological faces bounded by the edges. The closed skin defines a bounded region of 3D space filled with the part's material. Wire-frame modeling techniques, on the other band, can be used to represent a part as a collection of simple 3D lines, whereas surface modeling can be used to represent a part as a collection of exterior surfaces. CAD systems may combine these, and other, modeling techniques, such as parametric modeling techniques.
Parametric modeling techniques can be used to define various parameters for different design features of a part, and to define relationships between those design features based on relationships between the various parameters. Solid modeling and parametric modeling can be combined in CAD systems supporting parametric solid modeling.
A design engineer is a typical user of a 3D CAD system. The design engineer designs functional, physical and aesthetic aspects of 3D models, and is skilled in 3D modeling techniques. The design engineer designs parts, and may then assemble the parts into one or more subassemblies. In addition to parts, a subassembly may also consist of other subassemblies. Using parts and subassemblies, the design engineer typically designs an assembly.
For example in the field of car body design with a computer aided design system, existing solutions provide the user with geometrical and topological interactive commands. The designer deals with points, planes, curves and surfaces and the task is to create, deform, offset, sweep, extrapolate, trim, smooth, connect these curves and surfaces in order to get the final “body-in-white” shape, starting from an external styling surface.
A part is thus generally designed using various geometric building blocks, using tools generally provided in CAD systems. The order in which a design engineer creates design features while designing a part affects the physical structure of that part in a feature-based CAD. These systems are therefore said to be history-based. For example, a part constructed first by cutting a block with a cylinder and then adding a boss that extends inside the void left by the cut cylinder will result in a hole with material from the boss inside the hole. If the order of the operations were reversed such that the boss was added before the cylindrical cut, then the cut would not only cut the material of the original block, but also that of the subsequent boss, resulting in a hole with no material inside of it.
This is exemplified in FIGS. 1 to 3, which show a window displayed on the screen of a prior art CAD system. FIG. 1 shows a window 2 that contains three views of a part under construction. The top view 4, front view 6, and rotated view 8 reveal that the part is partially defined by two block features (i.e., upper block 12 and lower block 14). Additionally, the top view 4 and the front view 6 plainly show an extruded profile 10 of a circle. The purpose of the extruded profile 10 is to create a cylindrical cut feature in the part. FIG. 2 shows the window 2 after the extruded profile 10 was used to construct a cut feature. The cut 16 was created by subtracting material that was located within the extruded profile 10 from the upper block 12 and the lower block 14. The cut 16 would appear as illustrated in FIG. 2 in a history-based CAD system if the upper block 12 and the lower block 14 were included in the part definition (i.e., existed) prior to the inclusion of cut feature 16. FIG. 3 shows the window 2 containing a part in which a cut feature 18 did not subtract material from the upper block 12. The cut 18 may appear as illustrated in FIG. 3 in a history-based CAD system if the lower block 14 was included in the part definition first, the cut feature 18 was included in the part definition second, and the upper block 12 was included in the part definition third. The example of FIG. 1-3 shows that the order in which design features are entered for defining a part influences the output shape of the part. This discussion in reference to mechanical parts applies to other types of parts or components in a design system, e.g. molded parts, electrical features in a circuit, or more generally any type of features the assembly of which forms parts or components.
Existing CAD systems allow a posteriori modifications by capturing the history of geometrical operations performed by the designer. Modifying the design of a part is for the designer to change input parameters or geometrical objects and for the system to replay the history of operations, yielding a new result.
History-based systems raise different issues.
When using “wire frame and surface” CAD system's workbench, for instance when designing “Body-in-white” parts, features can be created and modified easily as long as they do not overlap too much. The overlapping of design features corresponds to a spatial collision between those design features. The CAD system must manage such a case so that a resulting geometry may still be computed. Beyond a certain overlapping rate the complexity cannot be managed by the CAD system and the designer's responsibility is to imagine how overlapping features should trim each other and to create the resulting geometry through basic tools. It is thus difficult for a designer to modify the design of a part which he first designed a long time before. Indeed, in such a case the designer may have forgotten how he managed overlapping design features and thus cannot take it into account for their modification intentions.
Because of the geometrical semantic provided by existing systems, only the design result is captured by the system, as opposed to the design intent, which remains in the user's mind. This is true even if the CAD system captures historical design. The consequence is that quality of the final shape is the entire responsibility of the designer. To reach a high quality, a dedicated methodology must be set up by the CAD editor together with application specialists (specialists of the field of application of the part). This methodology must be taught to designers, and a dedicated process must check that it is actually used in production. This consumes time and money and raises organization issues.
On the other hand, modifying by replaying the history of recorded operations computes a new but rather similar result. A big design change requires deletion and creation of many geometrical objects. Furthermore, beyond a certain level of complexity (typically the number of geometrical objects and their relationships) only the original designer may be able to perform the modification. Even that is not guaranteed because it is not provided that the designer still remembers what he/she has previously done.
The use of predefined templates has been suggested, but they do not raise the semantic level. They speed up the design creation phase, acting as a dialogue accelerator by creating many geometrical objects in one shot. But modification and rework drawbacks remain the same.
Because of history dependency, collaborative design is out of reach. It is well known that non commutative features cannot be shared easily through asynchronous collaboration. Indeed, if user A sends a design feature F to user B, inserting feature F at the right place in user's B ordered sequence cannot be done automatically.
These issues have been addressed by U.S. Pat. No. 7,495,662 entitled “Part design system using a context-free grammar”. This patent describes a history-based design system for designing a part with design features and a seed structure defined using a context-free grammar, the seed structure being adapted to receive contributions from instantiated design features. The seed structure is built so that the order in which contributions are received does not change the result output by the seed structure or, more specifically, the evaluation of this result by the core system. The seed structure may be edited by an editor. The editor makes it possible to adapt an existing seed structure to make it more efficient, according to the capabilities of the core system, without changing its function. The editor also makes it possible to increase the functional capabilities of a seed structure in a given application.
Through the use of a seed structure of a context-free grammar, U.S. Pat. No. 7,495,662 describes an infrastructure guarantying that the CAD system provides declarative design features. This way, it offers the advantages of history-based design systems even though the order in which the design features are instantiated is not relevant to the resulting part.
However, the solution described by U.S. Pat. No. 7,495,662 lacks handiness. Indeed, the seed structure capabilities in that patent are fixed at the conception stage with application specialists and cannot be modified by the end user. When designing a part, the designer has to take into account these capabilities. As a consequence, only design intents supported by the previously conceived seed structure may be concretized. It is thus mandatory that the designer designs adapts his/her design intent to the capabilities offered by the seed structure. Such low handiness only authorizes the design of simple and unrealistic parts.